package br.com.informatos.controle;

import java.util.List;
import java.util.Map;
import javax.faces.bean.ManagedBean;
import javax.faces.context.ExternalContext;
import javax.faces.context.FacesContext;
import javax.persistence.EntityManager;
import javax.servlet.http.HttpServletRequest;
import br.com.informatos.modelo.entidades.Jogador;
import br.com.informatos.modelo.entidades.Time;
import br.com.informatos.repositorio.JogadorRepositorio;
import br.com.informatos.repositorio.TimeRepositorio;

@ManagedBean
public class JogadorBean {

	private Jogador jogador = new Jogador();

	private Long timeID;

	private List<Jogador> jogadores;

	public void adiciona() {
		EntityManager manager = this.getManager();
		TimeRepositorio timeRepositorio = new TimeRepositorio(manager);
		JogadorRepositorio jogadorRepositorio = new JogadorRepositorio(manager);

		if (this.timeID != null) {
			Time time = timeRepositorio.procura(this.timeID);
			this.jogador.setTime(time);
		}

		if (this.jogador.getId() == null) {
			jogadorRepositorio.adiciona(this.jogador);
		}else {
			jogadorRepositorio.atualiza(this.jogador);
		}

		this.jogador = new Jogador();
		this.jogadores = null;

	}

	public void preparaAlteracao() {
		Map<String, String> params = FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap();
		Long id = Long.parseLong(params.get("id"));
		EntityManager manager = this.getManager();
		JogadorRepositorio repositorio = new JogadorRepositorio(manager);
		this.jogador = repositorio.procura(id);
	}

	public void remove() {
		Map<String, String> params = FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap();
		Long id = Long.parseLong(params.get("id"));
		EntityManager manager = this.getManager();
		JogadorRepositorio repositorio = new JogadorRepositorio(manager);
		repositorio.remove(id);
		this.jogadores = null;
	}

	public List<Jogador> getJogadores() {
		if (this.jogadores == null) {
			EntityManager manager = this.getManager();
			JogadorRepositorio repositorio = new JogadorRepositorio(manager);
			this.jogadores = repositorio.getLista();
		}

		return this.jogadores;
	}

	private EntityManager getManager() {
		FacesContext fc = FacesContext.getCurrentInstance();
		ExternalContext ec = fc.getExternalContext();
		HttpServletRequest request = (HttpServletRequest) ec.getRequest();
		return (EntityManager) request.getAttribute("EntityManager");

	}
		
	
	//getters e setters
	public Jogador getJogador() {
		return jogador;
	}

	public void setJogador(Jogador jogador) {
		this.jogador = jogador;
	}

	public Long getTimeID() {
		return timeID;
	}

	public void setTimeID(Long timeID) {
		this.timeID = timeID;
	}

	public void setJogadores(List<Jogador> jogadores) {
		this.jogadores = jogadores;
	}


	
	


}
